Many of the modern computer system networks utilize and require that specialized firmware be downloaded for placement on a target medium such as a disk or tape drive.
FIGS. 1A and 1B are illustrative of arrangements for downloading firmware in a SCSI (Small Computer Systems Interface) environment. Many inherent problems occurred in such downloading operations, such as properly identifying the target device and properly selecting the appropriate firmware to be downloaded. Then also, a latency problem occurred when the buffer arrays were not of sufficient size to handle the large volume of firmware bytes required for the download thus requiring sequences of multiple download commands to accomplish the download. It should here be understood that the target for download of firmware is the Controller (Peripheral Controller) which holds the microcode which is used to handle and control a peripheral device such as a disk, a set of disks, or tape unit.
A basic function of computer systems and digital modules very often is involved with loading microcode into various digital devices to make them properly operative. In many earlier systems SCSI firmware could only be downloaded using a single download command together with a single dimensional buffer array. On many occasions, the downloading utility program was faced with a situation where the system array capacity was not sufficiently large enough to accommodate the firmware that was required to be downloaded.
As a result, the downloading was delayed and had to be provided in a series of subsequent steps before the proper amount of firmware could be provided to the target digital modules.
The present system uses a library-exported interface to issue command requests. Then by adding a SCSI Inquiry command and querying the target device with information from a Page Code field, it was possible to retrieve the firmware numbers page. Thus the information returned contained the appropriate firmware release numbers and the servo RAM release numbers which the utility program could integrate this information in order to download the correct firmware.
The present disclosure provides a special SCSI Inquiry command which provides required information to produce access to the correct firmware, which can be downloaded in multiple cycles through the offices of a selective single or dual system array capacity, which overcame the limitations and delays caused by the earlier systems.
FIG. 1B shows the basic relationship between different software drivers and how they are utilized in the overall operation of a SCSI environment. Normally the Device Drivers 74, 76, 68, etc. will reside in the central processing unit's RAM 73 and they are loaded via the systems configuration utility program during the boot operation. In the disk operating system (DOS) environment, a program CONFIG.SYS provides a host computer with its operational parameters. The HA (Host Adapter) driver 82 resides in the host adapter 80 usually in some type of memory, such as EPROM.
The operating system 72, which calls a target driver, connects the various application programs 70a, 70b, 70c, over to either the tape driver 74, the disk driver 76 or the CD ROM driver 78. These then connect to the host adapter (HA) 80 and the HA number 1 driver 82. The HA driver requests command control blocks (CCB's) from the RAM 73 in the CPU. The data is then conveyed on SCSI bus 37 over to the peripheral controller 40, which has the controller firmware 86 which has to be loaded. The small computer systems interface (SCSI) uses the concept of host memory blocks for Command, Data, and Status, which will be interchanged between the host computer and the SCSI device. The host memory blocks are prepared by the host and managed by the host adapter. These host memory blocks must actually be found by the peripheral device which is attached to the host adapter. This is accomplished through what is known as “Pointers”.
FIG. 1C shows the basic physical components of a SCSI based system. These are items which include the “Initiators” which involve usually host adapters, (HA), that is to say, the devices that initiate an I/O process. Then there are the modules which involve the peripheral controllers, that is to say the devices that control the I/O process and are shown in the lower portion of FIG. 1C. There are also the Logical Units which are the physical peripheral devices, that is to say, modules where the data is stored or retrieved, and in addition there is the SCSI bus, which is the connection between the initiators and the targets.
Thus, FIG. 1C shows how information is transferred from the application program 70 over to the physical target device 96. FIG. 1C shows the application program 70 which is applied to the operating system 72, which connects to the target device driver 75x. Here there is a two-way communication between 75x and the host adapter driver 82, which then connects to the SCSI chip 86. This first set of modules involve the host system and from thence the connections go on the SCSI bus 37, showing the command status, the message and monitor bus phases, and the arbitration selection re-selection transfer data. Thus the SCSI chip 86 connects to the SCSI chip 88 which loads the firmware 90. The SCSI chip 88 also loads the buffer 92, which is connected to the drive electronics 94, which operates the physical target device 96.
The present invention provides a faster and more efficient method for downloading firmware to a selected peripheral controller while selecting appropriate firmware for a target medium and enabling the download to occur with a minimum of sequential commands and often accomplishing the download in just one download command.